Some types of graphics printers use a thermal printhead to transfer image data stored in a computer memory onto a printing surface. The thermal printhead may provide a single "column" of dots vertically oriented with respect to the printing surface. Thus, image data is printed one or more columns at a time. A thermal printhead is made up of "dots" or resistive elements that heat up a foil and transfer ink from a carrier (ribbon). The areas to be printed have the dots heated up; the areas left blank have the dots remain cool. Each dot can be represented by a binary digit, wherein a binary "1" means the corresponding dot is turned on and a binary "0" means the corresponding dot is turned off. This binary data is easily stored in a computer memory, but the image data must be column-oriented for it to print correctly on the vertically oriented printhead described above.
Performance problems arise when printing Japanese Kanji characters. Kanji character sets stored in ROM are accessed by rows. Such a ROM device is the Hitachi 4 megabit HN62404, wherein a bit mapped Kanji character set resides in 2 ROM chips. There are two different character sets available from Hitachi, comprised of two different font sizes. One character set is made up of 24 bit .times. 24 bit characters and the other set is made up of 32 bit .times. 32 bit characters. In both cases, each character is located in a 32 bit .times. 32 bit memory space divided between the two ROM chips. Each character row in the device is accessed using an 18 bit address. The most significant 13 bits of the address identify the Kanji character; the least significant 5 bits of the address identify the rows making up the Kanji character.
Each Kanji character resides in this device in a manner described by FIG. 2. Half of each Kanji character is located in each of two ROMs: the "left" half in ROM 18 and the "right" half in ROM 19. Both 18 and 19 are is divided into two halves, 20/21 and 22/23 respectively. Although each row of 18 and 19 is comprised of 16 bits, data is read from the device one byte at a time.
A software program could be used to read directly the row-oriented Kanji character data in the ROMs, but for printing the image data must be column-oriented. Therein lies the problem. If the software simply reads directly the row-oriented data in the ROM, then to create one byte of column-oriented data the ROM must be read eight times and consecutively mask off seven bits. The problem, then, is speed of conversion. It has been estimated that it may take software from 2 to 5 milliseconds to convert a 32 bit .times. 32 bit Kanji character. If the image has 200 characters in it, then: ##EQU1##
If it takes 0.4 seconds per image to convert 200 Kanji characters from row orientation to column orientation, then the printer is drastically slowed down. What is needed is a fast method of converting the row-oriented Kanji character into a column-oriented image.